SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

CREATE PROCEDURE [dbo].[pje_porCampamentosyCompetencias] @idinscripcion integer, @pje float output, @resultado as integer output AS
set nocount on --para anular el trafico econ el cliente (no salen los print)
declare  @idAgente as int,@CargoGenerico as int,@AsignaturaGenerica as int, @idTipoConvocatoria as int ,@fechaLimite as datetime,@nivel_insc as int,@modalidad_insc as int,@ciclo as int
declare @pjeA as float,@pjeB as float
declare @topecampamentos as float,@topeCompetencias as float
declare @sum as float, @grupoIncumbencia as smallint,@grupoIncumbencia2 as smallint

DECLARE @Error INT

BEGIN TRANSACTION
             SET @ERROR=0

--select @topeCampamentos =(select valor from tb_topetiposantecedentes where rubro=xx and TipoAntecedente =yy )-- leo el  tope por Servicios en el nivel
--select @topeCompetencias =(select valor from tb_topetiposantecedentes where rubro=xx and TipoAntecedente =yy )-- leo el  tope por Servicios en el nivel

select @topeCampamentos= (select isnull(valor1,9999) from tb_parametros where idparametro=37) --si valor 1está en null significa que no tiene tope
select @topeCompetencias= (select isnull(valor1,9999) from tb_parametros where idparametro=38)

print 'Topes'
print @topeCampamentos
print @topeCompetencias

select  @idAgente=i.Agente,@cargoGenerico = i.CargoGenerico,@AsignaturaGenerica=i.AsignaturaGenerica,@idtipoConvocatoria=Conv.TipoConvocatoria,@FechaLimite=Conv.FechaLimite,@nivel_insc = i.nivel,@modalidad_insc=i.modalidad,@ciclo=ciclo
	from 
	tb_inscripcionesConvocatorias i 
		join tb_Convocatorias conv on i.Convocatoria=conv.idConvocatoria 
	where i.idInscripcionConvocatoria=@idInscripcion

if @nivel_insc = 3 and @ciclo = 2 set  @nivel_insc=4

select @grupoIncumbencia=case
	when @nivel_insc = 2 then 572
	when @nivel_insc = 3 then 573
	when @nivel_insc = 4 then 571
end

select @grupoIncumbencia2=case
	when @nivel_insc = 2 then 570
	when @nivel_insc = 3 then 570
	when @nivel_insc = 4 then 571
end

print 'incumbencia'
print @grupoIncumbencia 
print @grupoIncumbencia2

if  @idTipoConvocatoria in (1,2,3,4,5,9)--   TipoConvocatoria = 1 ingreso,interinatos y suplencias
begin

			declare c cursor FORWARD_ONLY FOR
			select 
				  isnull (sum(PuntajeParaIncumbencias),0)  puntaje 
			from tb_antecedentes a 
				join tb_tiposAntecedentes t on a.tipo=t.idtipoantecedente 
				join tb_gruposDeIncumbencias G on G.idGrupoIncumbencia=a.GrupoIncumbencias
--				join tb_reluniongsgu R on r.idgrupounion = G.idGrupoIncumbencia
				join tb_incumbencias h on G.idGrupoincumbencia=h.grupoIncumbencia
		    	         where a.rubro=6 and a.tipo in(44,46)  and agente=@idagente and h.CargoGenerico=@Cargogenerico 
				and h.AsignaturaGenerica=@AsignaturaGenerica and a.FechaPresentacion <= @FechaLimite
				and (G.IDgrupoIncumbencia= @grupoIncumbencia or G.IDgrupoIncumbencia= @grupoIncumbencia2 or  a.grupoincumbencias =99)		

		SET @Error = @@ERROR 
		IF @Error <> 0 GOTO Salir

		
			open c
			fetch next from c into @sum

			set @pjeA=0

			while @@FETCH_STATUS = 0
			begin
				set @pjeA=@pjeA + @sum
				--print 'Campamentos'
				--print @pjeA

				fetch next from c into @sum
			end

			close c
			deallocate c

			print @pjeA

			if @pjeA > @topeCampamentos  set @pjeA=@topeCampamentos

			declare c cursor forward_only for
			select 
				  isnull (sum(PuntajeParaIncumbencias),0)  puntaje
			from tb_antecedentes a 
				join tb_tiposAntecedentes t on a.tipo=t.idtipoantecedente 
				join tb_gruposDeIncumbencias G on G.idGrupoIncumbencia=a.GrupoIncumbencias
--				join tb_reluniongsgu R on r.idgrupounion = G.idGrupoIncumbencia
				join tb_incumbencias h on G.idGrupoINCUMBENCIA=h.grupoIncumbencia
		    	         where a.rubro=6 and a.tipo in(45,47)  and agente=@idagente and h.CargoGenerico=@Cargogenerico
				 and h.AsignaturaGenerica=@AsignaturaGenerica and a.FechaPresentacion <= @FechaLimite
				and (G.IDgrupoIncumbencia= @grupoIncumbencia or G.IDgrupoIncumbencia= @grupoIncumbencia2 or  a.grupoincumbencias =99)--sumo todos los artículos que tiene el agente

			open c
			fetch next from c into @sum

			set @pjeB=0

			while @@FETCH_STATUS = 0

			begin
				set @pjeB=@pjeB+@sum
				--print 'Competencias'
				--print @pjeB
				fetch next from c into @sum
			end

			close c
			deallocate c

			print @pjeB


			if @pjeB > @topeCompetencias set @pjeB=@topeCompetencias
			print @pjeA
			print @pjeB

			set @pje = @pjeA+@pjeB

end

--print 'puntaje final por campamentos y competencias: ' + cast( @pje as varchar)

Salir:
IF @Error <> 0 
	ROLLBACK TRANSACTION
ELSE 
	COMMIT TRANSACTION
GO
GRANT EXECUTE ON  [dbo].[pje_porCampamentosyCompetencias] TO [Juntas]
GO
